import axios from "axios";
import { useUserStore } from "@renderer/store/modules/user";

import { getRequestUrl } from "@renderer/utils/other";
import { useBaseConfigStore } from "@renderer/store/modules/baseConfig";

// getRequestUrl();
const serves = axios.create({
  // baseURL: __CONFIG__.BASE_API,
  baseURL: await getRequestUrl("BASE_API"),

  timeout: 5000,
});

// 设置请求发送之前的拦截器
serves.interceptors.request.use(
  (config) => {
    const baseConfigStore = useBaseConfigStore();
    if (!baseConfigStore.ifOnline) {
      ElMessage.error("请检查网络连接");
      return Promise.reject("请检查网络连接");
    }
    // return false;
    // 设置发送之前数据需要做什么处理
    let token = localStorage.getItem("token");
    if (token) {
      config.headers["Authorization"] = token;
    }
    return config;
  },
  (err) => Promise.reject(err)
);

// 设置请求接受拦截器
serves.interceptors.response.use(
  (res) => {
    let userStore = useUserStore();
    // 设置接受数据之后，做什么处理
    if (res.data.code == 500) {
      ElMessage.error(res.data.message || res.data.msg);
    }
    if (res.data.code == 509 || res.data.code == 508) {
      ElMessage.error(res.data.message || res.data.msg);
      userStore.clearInfo();
      userStore.toggleShowLogin(true);
    }
    return res.data;
  },
  (err) => {
    // console.log("err", err);

    ElMessage.error("err:" + err.response.data.message);
    // 判断请求异常信息中是否含有超时timeout字符串
    if (err.message.includes("timeout")) {
      console.log("错误回调", err);
    }
    if (err.message.includes("Network Error")) {
      console.log("错误回调", err);
    }
    return Promise.reject(err);
  }
);

// 将serves抛出去
export default serves;
